home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1999 Spring / macformat-077.iso / Shareware Plus / Development / SpriteWorld 2.2 / SpriteWorld files / Utils / SWDialogUtils.c < prev    next >
Encoding:
Text File  |  1998-03-17  |  10.8 KB  |  409 lines  |  [TEXT/CWIE]

  1. ///--------------------------------------------------------------------------------------
  2. //    SWDialogUtils.c
  3. //
  4. //    Created:    12/16/91 @ 11:37:55 PM
  5. //    By:        Tony Myles
  6. //
  7. //    Copyright © 1991-94, Tony Myles    All rights reserved worldwide.
  8. //
  9. //    Description: multitudinous dialog utility routines
  10. ///--------------------------------------------------------------------------------------
  11.  
  12.  
  13. #ifndef __DIALOGS__
  14. #include <Dialogs.h>
  15. #endif
  16.  
  17. #ifndef __OSUTILS__
  18. #include <OSUtils.h>
  19. #endif
  20.  
  21. #ifndef __DIALOGUTILS__
  22. #include <SWDialogUtils.h>
  23. #endif
  24.  
  25.  
  26.  
  27. ///--------------------------------------------------------------------------------------
  28. // GetDItemHilite
  29. //
  30. //    get the hilite of a dialog item
  31. ///--------------------------------------------------------------------------------------
  32.  
  33. Boolean GetDItemHilite(DialogPtr dlgP, short itemNum)
  34. {
  35.     short itemType;
  36.     Rect itemRect;
  37.     Handle itemH;
  38.  
  39.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  40.     return (**(ControlHandle)itemH).contrlHilite == 0;
  41. }
  42.  
  43.  
  44. ///--------------------------------------------------------------------------------------
  45. // SetDItemHilite
  46. //
  47. //    set the hilite of a dialog item
  48. ///--------------------------------------------------------------------------------------
  49.  
  50. void SetDItemHilite(DialogPtr dlgP, short itemNum, Boolean hilite)
  51. {
  52.     short itemType;
  53.     Rect itemRect;
  54.     Handle itemH;
  55.  
  56.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  57.     HiliteControl((ControlHandle)itemH, (hilite) ? 0 : 255);
  58. }
  59.  
  60.  
  61. ///--------------------------------------------------------------------------------------
  62. // GetDItemText
  63. //
  64. //    get the text of a dialog item
  65. ///--------------------------------------------------------------------------------------
  66.  
  67. void GetDItemText(DialogPtr dlgP, short itemNum, Str255 iStr)
  68. {
  69.     short itemType;
  70.     Rect itemRect;
  71.     Handle itemH;
  72.  
  73.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  74.     GetDialogItemText(itemH, iStr);                
  75. }
  76.  
  77.  
  78. ///--------------------------------------------------------------------------------------
  79. // SetDItemText
  80. //
  81. //    set the text of a dialog item
  82. ///--------------------------------------------------------------------------------------
  83.  
  84. void SetDItemText(DialogPtr dlgP, short itemNum, Str255 iStr)
  85. {
  86.     short itemType;
  87.     Rect itemRect;
  88.     Handle itemH;
  89.  
  90.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  91.     SetDialogItemText(itemH, iStr);                
  92. }
  93.  
  94.  
  95. ///--------------------------------------------------------------------------------------
  96. // GetDItemCtlTitle
  97. //
  98. //    get the title of a control dialog item
  99. ///--------------------------------------------------------------------------------------
  100.  
  101. void GetDItemCtlTitle(DialogPtr dlgP, short itemNum, Str255 iStr)
  102. {
  103.     short itemType;
  104.     Rect itemRect;
  105.     Handle itemH;
  106.  
  107.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  108.     GetControlTitle((ControlHandle)itemH, iStr);                
  109. }
  110.  
  111.  
  112. ///--------------------------------------------------------------------------------------
  113. // SetDItemCtlTitle
  114. //
  115. //    set the title of a control dialog item
  116. ///--------------------------------------------------------------------------------------
  117.  
  118. void SetDItemCtlTitle(DialogPtr dlgP, short itemNum, Str255 iStr)
  119. {
  120.     short itemType;
  121.     Rect itemRect;
  122.     Handle itemH;
  123.  
  124.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  125.     GetControlTitle((ControlHandle)itemH, iStr);
  126.  
  127.         // validate the control’s rectangle since the
  128.         // Control Manager needlessly invalidates it
  129.     itemRect = (**(ControlHandle)itemH).contrlRect;
  130.     ValidRect(&itemRect);
  131. }
  132.  
  133.  
  134. ///--------------------------------------------------------------------------------------
  135. // SetDItemCtlRefCon
  136. //
  137. //    set the reference value of a control dialog item
  138. ///--------------------------------------------------------------------------------------
  139.  
  140. void SetDItemCtlRefCon(DialogPtr dlgP, short itemNum, long refNum)
  141. {
  142.     short itemType;
  143.     Rect itemRect;
  144.     Handle itemH;
  145.  
  146.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  147.     SetControlReference((ControlHandle)itemH, refNum);
  148. }
  149.  
  150.  
  151. ///--------------------------------------------------------------------------------------
  152. // GetDItemCtlRefCon
  153. //
  154. //    returns the reference value of a control dialog item
  155. ///--------------------------------------------------------------------------------------
  156.  
  157. long GetDItemCtlRefCon(DialogPtr dlgP, short itemNum)
  158. {
  159.     short itemType;
  160.     Rect itemRect;
  161.     Handle itemH;
  162.  
  163.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  164.     return(  GetControlReference((ControlHandle)itemH) );
  165. }
  166.  
  167.  
  168. ///--------------------------------------------------------------------------------------
  169. // HideShowDItemControl
  170. //
  171. //    hide or show a control dialog item
  172. ///--------------------------------------------------------------------------------------
  173.  
  174. void HideShowDItemControl(DialogPtr dlgP, short itemNum, Boolean show)
  175. {
  176.     short itemType;
  177.     Rect itemRect;
  178.     Handle itemH;
  179.  
  180.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  181.     if ( show )
  182.         ShowControl( (ControlHandle)itemH );
  183.     else
  184.         HideControl( (ControlHandle)itemH );
  185. }
  186.  
  187.  
  188.  
  189. ///--------------------------------------------------------------------------------------
  190. // GetDItemHandle
  191. //
  192. //    return the handle of a dialog item
  193. ///--------------------------------------------------------------------------------------
  194.  
  195. Handle GetDItemHandle(DialogPtr dlgP, short itemNum)
  196. {
  197.     short itemType;
  198.     Rect itemRect;
  199.     Handle itemH;
  200.  
  201.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  202.  
  203.     return itemH;
  204. }
  205.  
  206.  
  207. ///--------------------------------------------------------------------------------------
  208. // SetDItemHandle
  209. //
  210. //    set the handle of a dialog item
  211. ///--------------------------------------------------------------------------------------
  212.  
  213. void SetDItemHandle(DialogPtr dlgP, short itemNum, Handle newItemH)
  214. {
  215.     short itemType;
  216.     Rect itemRect;
  217.     Handle itemH;
  218.  
  219.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  220.     SetDialogItem(dlgP, itemNum, itemType, newItemH, &itemRect);
  221. }
  222.  
  223.  
  224. ///--------------------------------------------------------------------------------------
  225. // GetDItemRect
  226. //
  227. //    return the rect of a dialog item
  228. ///--------------------------------------------------------------------------------------
  229.  
  230. void GetDItemRect(DialogPtr dlgP, short itemNum, Rect *itemRect)
  231. {
  232.     short itemType;
  233.     Handle itemH;
  234.  
  235.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, itemRect);
  236. }
  237.  
  238.  
  239. ///--------------------------------------------------------------------------------------
  240. // SetDItemRect
  241. //
  242. //    set the rect of a dialog item
  243. ///--------------------------------------------------------------------------------------
  244.  
  245. void SetDItemRect(DialogPtr dlgP, short itemNum, Rect *newItemRect)
  246. {
  247.     short itemType;
  248.     Handle itemH;
  249.     Rect itemRect;
  250.  
  251.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  252.     SetDialogItem(dlgP, itemNum, itemType, itemH, newItemRect);
  253. }
  254.  
  255.  
  256. ///--------------------------------------------------------------------------------------
  257. // GetDItemType
  258. //
  259. //    return the type of a dialog item
  260. ///--------------------------------------------------------------------------------------
  261.  
  262. void GetDItemType(DialogPtr dlgP, short itemNum, short *itemType)
  263. {
  264.     Handle itemH;
  265.     Rect itemRect;
  266.  
  267.     GetDialogItem(dlgP, itemNum, itemType, &itemH, &itemRect);
  268. }
  269.  
  270.  
  271. ///--------------------------------------------------------------------------------------
  272. // SetDItemType
  273. //
  274. //    set the type of a dialog item
  275. ///--------------------------------------------------------------------------------------
  276.  
  277. void SetDItemType(DialogPtr dlgP, short itemNum, short newItemType)
  278. {
  279.     short itemType;
  280.     Handle itemH;
  281.     Rect itemRect;
  282.  
  283.     GetDialogItem(dlgP, itemNum, &itemType, &itemH, &itemRect);
  284.     SetDialogItem(dlgP, itemNum, newItemType, itemH, &itemRect);
  285. }
  286.  
  287.  
  288. ///--------------------------------------------------------------------------------------
  289. // GetDItemValue
  290. //
  291. //    set a dialog control's value
  292. ///--------------------------------------------------------------------------------------
  293.  
  294. short GetDItemValue(DialogPtr dlgP, short itemNum)
  295. {
  296.     short itemType;
  297.     Rect itemRect;
  298.     Handle itemH;
  299.  
  300.     GetDialogItem( dlgP, itemNum, &itemType, &itemH, &itemRect );
  301.     return( GetControlValue( (ControlHandle)itemH) );
  302. }
  303.  
  304.  
  305. ///--------------------------------------------------------------------------------------
  306. // SetDItemValue
  307. //
  308. //    set a dialog control's value
  309. ///--------------------------------------------------------------------------------------
  310.  
  311. void SetDItemValue(DialogPtr dlgP, short itemNum, short value)
  312. {
  313.     short itemType;
  314.     Rect itemRect;
  315.     Handle itemH;
  316.  
  317.     GetDialogItem( dlgP, itemNum, &itemType, &itemH, &itemRect );
  318.     SetControlValue( (ControlHandle)itemH, value );
  319. }
  320.  
  321.  
  322. ///--------------------------------------------------------------------------------------
  323. // ToggleDItemValue
  324. //
  325. //    toggle a button or check box
  326. ///--------------------------------------------------------------------------------------
  327.  
  328. void ToggleDItemValue(DialogPtr dlgP, short itemNum)
  329. {
  330.     short itemType;
  331.     Rect itemRect;
  332.     Handle itemH;
  333.  
  334.     GetDialogItem( dlgP, itemNum, &itemType, &itemH, &itemRect );
  335.     SetControlValue( (ControlHandle)itemH, !(GetControlValue( (ControlHandle)itemH)) );
  336. }
  337.  
  338.  
  339. ///--------------------------------------------------------------------------------------
  340. // SetDItemToUserItem
  341. //
  342. //    set a dialog item to a user item
  343. ///--------------------------------------------------------------------------------------
  344.  
  345. void SetDItemToUserItem(DialogPtr dlgP, short itemNum, Handle theUserItemUPP)
  346. {
  347.     short itemType;
  348.     Rect itemRect;
  349.     Handle itemH;
  350.  
  351.     GetDialogItem( dlgP, itemNum, &itemType, &itemH, &itemRect );    
  352.     SetDialogItem (dlgP, itemNum, itemType, (Handle)theUserItemUPP, &itemRect);    
  353. }
  354.  
  355.  
  356. ///--------------------------------------------------------------------------------------
  357. // SetDItemControlAction
  358. ///--------------------------------------------------------------------------------------
  359.  
  360. void SetDItemControlAction(DialogPtr dlgP, short itemNum, ControlActionUPP actionProcUPP)
  361. {
  362.     short itemType;
  363.     Rect itemRect;
  364.     Handle itemH;
  365.  
  366.     GetDialogItem( dlgP, itemNum, &itemType, &itemH, &itemRect );
  367.     SetControlAction( (ControlHandle)itemH, actionProcUPP );
  368. }
  369.  
  370.  
  371. ///--------------------------------------------------------------------------------------
  372. // OutlineDefaultButton
  373. ///--------------------------------------------------------------------------------------
  374.  
  375. void OutlineDefaultButton(DialogPtr dlgP, short itemNum)
  376. {
  377.     Rect buttonRect;
  378.     
  379.     GetDItemRect(dlgP, itemNum, &buttonRect);
  380.  
  381.     InsetRect(&buttonRect, -4, -4);
  382.     PenSize(3, 3);
  383.     FrameRoundRect(&buttonRect, 16, 16);
  384.     PenNormal();
  385. }
  386.  
  387.  
  388. ///--------------------------------------------------------------------------------------
  389. // ClickDialogButton
  390. ///--------------------------------------------------------------------------------------
  391.  
  392. void ClickDialogButton(DialogPtr dlgP, short itemNum)
  393. {
  394.     ControlHandle dialogButtonH;
  395.     unsigned long finalTicks;
  396.  
  397.     dialogButtonH = (ControlHandle)GetDItemHandle(dlgP, itemNum);
  398.  
  399.     if (dialogButtonH != NULL)
  400.     {
  401.         HiliteControl(dialogButtonH, 1);
  402.         Delay(10, &finalTicks);
  403.         HiliteControl(dialogButtonH, 0);
  404.     }
  405. }
  406.  
  407.  
  408.  
  409.